home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 June / EnigmA AMIGA RUN 08 (1996)(G.R. Edizioni)(IT)[!][issue 1996-06][EARSAN CD VII].iso / earcd / ead / ead15.dms / ead15.adf / Basic / MadRace < prev    next >
Text File  |  1989-04-30  |  4KB  |  152 lines

  1. '             M A D   R A C E !
  2. '           by   Paolo Scalabrini  
  3. '            Via  al Bricco 11/7   
  4. '          16014  Campomorone (GE) 
  5. '            Tel. (010) 78.10.29           
  6.  
  7. CLEAR ,10000                          
  8. RANDOMIZE TIMER
  9. 'definizione variabili
  10. DIM PrendoVideo%(96)
  11. DIM EndRace%(546):AccX=20:AccY=20
  12. causa$="":X1=150:Y1=140:pneum%=110:X2=130:Y2=10:Punti%=0:tempo%=0
  13. x%=0:y=0:ww%=0:x$="":sprdef$="":sprdef1$="":sprdef2$="":VelX=20:VelY=4
  14. SCREEN 1,320,256,5,1                 
  15. WINDOW 2,"Mad Race! by Paolo Scalabrini",,0,1         
  16. PALETTE 0,.22,.54,.14
  17. LINE (120,0)-(200,8),1,bf
  18. COLOR 0,1:LOCATE 1,16:PRINT "* finish *"
  19. COLOR 1,0
  20. GET (120,0)-(200,8),EndRace%
  21. GOSUB DefSprites
  22. Inizio:
  23. CLS:LOCATE 12,10:PRINT "P R E P A R A T I !"
  24. FOR x%=440 TO 4400 STEP 40:SOUND x%,.5:NEXT
  25. CLS:LINE (120,0)-(200,256),24,bf        'Disegna la strada
  26. LINE (120,0)-(128,256),12,bf
  27. LINE (192,0)-(200,256),12,bf
  28. FOR y=-15 TO 256 STEP 16
  29.   LINE (158,y)-(162,y+12),1,bf
  30. NEXT
  31. OBJECT.X 1,X1:OBJECT.Y 1,Y1         'posiziona gli sprite
  32. OBJECT.X 2,X2:OBJECT.Y 2,Y2
  33. OBJECT.ON:OBJECT.START:GOSUB gomme
  34. Loop:
  35. COLLISION ON
  36. ON COLLISION GOSUB GestColl             'verifica collisioni
  37. GOSUB MuoviStrada
  38. GOSUB GestJoy
  39. GOSUB ControlAuto
  40. Punti%=Punti%+1:tempo%=tempo%+1
  41. IF tempo% > 1000 THEN GOSUB FineGara:GOTO Restart
  42. IF causa$<>"" THEN GOSUB Incidente:GOTO Restart 
  43. GOTO Loop
  44. MuoviStrada:
  45.   GET (158,237)-(162,241),PrendoVideo%
  46.   SCROLL (158,0)-(162,253),0,4
  47.   PUT (158,0),PrendoVideo%,OR
  48.   RETURN
  49. DefSprites:
  50.   FOR x%=0 TO 52
  51.     READ ww%
  52.     sprdef$=sprdef$+MKI$(ww%)
  53.   NEXT
  54.   sprdef1$=sprdef$+MKI$(&HDF)+MKI$(&H0)+MKI$(&HF33)
  55.   OBJECT.SHAPE 1,sprdef1$
  56.   sprdef2$=sprdef$+MKI$(&HDF)+MKI$(&H0)+MKI$(&H33F)
  57.   OBJECT.SHAPE 2,sprdef2$
  58.   RETURN                               
  59.     DATA &h0000,&h0000,&h0000,&h0000,&H0000,&H0002,&H0000,&H0010
  60.     DATA &h0000,&h0014,&h0019,&h0003,&h0000,&h0e70,&h324c,&h6a56
  61.     DATA &h2a54,&h2244,&h3ffc,&h7ffe,&h7ffe,&h7ffe,&h3ffc,&h3ffc
  62.     DATA &h3ffc,&h23c4,&h1ff8,&h0000,&h0000,&h0000,&h0000,&h0000 
  63.     DATA &h0000,&h0ff0,&h3ffc,&h7ffe,&hffff,&hffff,&hf00f,&h6006 
  64.     DATA &h7ffe,&h7ffe,&hffff,&he007,&hf00f,&hffff,&h1ff8,&h0000 
  65.     DATA &h0000,&h0000,&h0000,&h0000,&h0000
  66. GestJoy:
  67.   AccX=40*STICK(2)
  68.   AccY=30*STICK(3)
  69.   GOSUB ControlPos
  70.   GOSUB SetSpritePos
  71.   RETURN
  72. SetSpritePos:
  73.   OBJECT.VX 1,AccX:OBJECT.VY 1,AccY
  74.   OBJECT.VX 2,VelX:OBJECT.VY 2,VelY
  75.   RETURN
  76. ControlPos:
  77.   IF OBJECT.X (1)<=129 THEN OBJECT.X 1,128:GOSUB gomme
  78.   IF OBJECT.X (1)=>181 THEN OBJECT.X 1,180:GOSUB gomme
  79.   IF OBJECT.Y (1)<=120 THEN OBJECT.Y 1,120
  80.   IF OBJECT.Y (1)=>220 THEN OBJECT.Y 1,220
  81.   RETURN
  82. gomme:
  83.   IF pneum%<110 THEN SOUND 1500,.2,255
  84.   pneum%=pneum%-10
  85.   LOCATE 5,1:PRINT USING "Gomme:  ###";pneum%
  86.   IF pneum%<=0 THEN causa$="Hai bucato gli pneumatici"
  87.   RETURN
  88. Incidente:
  89.   OBJECT.STOP:COLLISION OFF
  90.   FOR x%=3000 TO 0 STEP -50:SOUND x%,.5:NEXT
  91.   FOR x%=1 TO 2000:NEXT
  92.   OBJECT.OFF
  93.   CLS
  94.   FOR x%=1 TO 16
  95.     COLOR colore
  96.     colore=(colore+1) MOD 2
  97.     LOCATE 10,8:PRINT causa$
  98.     SOUND 440,2*colore   
  99.     FOR rit=1 TO 300:NEXT
  100.   NEXT
  101.   COLOR 1
  102.   RETURN
  103. Restart:
  104.   CLS
  105.   LOCATE 9,7:PRINT "Hai totalizzato punti:";Punti%
  106.   LOCATE 11,9:LINE INPUT "Giochi ancora?  [S/N]";x$
  107.   x$=UCASE$(x$)
  108.   IF x$="N" THEN SYSTEM ELSE RUN   
  109. ControlAuto:
  110. VelY=RND*50
  111. IF OBJECT.Y (2)>=220 THEN
  112.   OBJECT.Y 2,20
  113.   Punti%=Punti%+15
  114.   GOSUB suono
  115. END IF
  116. NewVelX=(RND*60)+10:IF SGN(VelX)=-1 THEN NewVelX=-NewVelX:VelX=NewVelX
  117. IF OBJECT.X (2)<=129 THEN VelX=-VelX:OBJECT.X 2,130
  118. IF OBJECT.X (2)>=175 THEN VelX=-VelX:OBJECT.X 2,173
  119. GOSUB SetSpritePos
  120. RETURN
  121. GestColl:
  122.   IF COLLISION(2) THEN
  123.     PALETTE 0,1,0,0
  124.     SOUND 1000,3
  125.     FOR x%=1 TO 200:NEXT
  126.     PALETTE 0,.22,.54,.14
  127.     causa$="Hai scontrato l'altra auto"
  128.   END IF
  129.   RETURN
  130. suono:
  131.   FOR x%=100 TO 3000 STEP 100:SOUND x%,.2:NEXT:RETURN
  132.  
  133. FineGara: 
  134.   OBJECT.STOP:COLLISION OFF 
  135.   PUT (120,0),EndRace%,PSET
  136.   FOR rit=1 TO 800:NEXT
  137.   FOR move=OBJECT.Y(1) TO 10 STEP -.1
  138.     OBJECT.Y 1,move
  139.   NEXT
  140.   FOR x%=1 TO 3:FOR y=40 TO 5000 STEP 100:SOUND y,.25:NEXT y,x%
  141.   OBJECT.OFF
  142.   Punti%=Punti%+1000
  143.   RETURN
  144.   
  145.  
  146.  
  147.           
  148.  
  149.   
  150.  
  151.  
  152.